package bibliOnline.util;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * Implementa la struttura del messaggio da inviare al client in 
 * risposta a richieste riguardanti gli utenti.
 *  
 * @author Fabio Righi
 */
@XmlRootElement()
public class ResponseMessage 
{

    /** boolean che indica la riuscita dell'operazione richiesta
     * dal client.
     */
    private boolean success;
    
    /** String che dettaglia al client il successo/insuccesso dell'operazione */
    private String message;
    
    // L'utente che ha effettuato l'operazione
    private String username;
     
    /** boolean che indica che l'invio della risposta al client deve avvenire 
     * come testo non formattato.
     * 
     * L'uso di transient permette di evitare l'invio al client di qusto campo.
     */
    private transient boolean simple_return;

    /**
     * Costruttore vuoto
     */
    public ResponseMessage() {
    }

    /**
     * Costruttore che inizializza il messaggio testuale, il dato booleano e il 
     * flag relativo all'invio al client.
     * 
     * @param success boolean che indica la riuscita dell'operazione richiesta
     * dal client.
     * @param message String che dettaglia al client il successo/insuccesso dell'operazione
     * @param simple_return boolean che indica che l'invio della risposta al client deve avvenire 
     * come testo non formattato
     * 
     * @see String,boolean
     */
    public ResponseMessage(boolean success, String message, boolean simple_return) {
        this.success = success;
        this.message = message;
        this.simple_return = simple_return;
    }

    /**
     * Setta il dato booleano che indica se l'invio della risposta al client 
     * deve avvenire come testo non formattato.
     *
     * @param boolean che indica se l'invio della risposta al client 
     * deve avvenire come testo non formattato
     */
    public void setSimple_return(boolean simple_return) {
        this.simple_return = simple_return;
    }

    /**
     * Ritorna il dato booleano che indica se l'invio della risposta al client 
     * deve avvenire come testo non formattato.
     * 
     * @return boolean che indica se l'invio della risposta al client deve 
     * avvenire come testo non formattato.
     * 
     * @see String
     */
    public boolean getSimple_return() {
        return simple_return;
    }

    /**
     * Setta il dato booleano che indica la riuscita dell'operazione richiesta 
     * dal client.
     * 
     * @param success boolean che indica la riuscita dell'operazione richiesta
     * dal client.
     * 
     * @see boolean
     */
    public void setSuccess(boolean success) {
        this.success = success;
    }

    /**
     * Ritorna il dato booleano che indica la riuscita dell'operazione richiesta 
     * dal client.
     *
     * @return boolean che indica la riuscita dell'operazione richiesta 
     * dal client.
     */
    @XmlElement()
    public boolean getSuccess() {
        return success;
    }

    /**
     * Setta il messaggio testuale che dettaglia al client il successo/insuccesso 
     * della richiesta.
     * 
     * @param message String che contiene i dettagli da comunicare al client 
     * riguardo il successo/insuccesso dell'operazione
     * 
     * @see String
     */
    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * Ritorna il messaggio testuale che dettaglia al client il successo/insuccesso 
     * della richiesta.
     * 
     * @return String che contiene i dettagli da comunicare al client 
     * riguardo il successo/insuccesso dell'operazione
     * 
     * @see String
     */
    @XmlElement()
    public String getMessage() {
        return message;
    }
    
    public void setUsername(String username) {
        this.username = username;
    }
}



